Date		:	8 septembre 1993
		Protection	:	DISQUETTE CLEF
		Programme	:       CYRUS CHESS
		Outils		:	SOFT-ICE V2.50
		Fichier		:	CYRUS.COM et CHESS.TSK
		Temps pass�	:	1 Heure
		Soci�t�		:	INTELLIGENT CHESS SOFTWARE LTD
		Divers	        :	Fichiers en clair
		Origine		:	B.Alain
		Num�ro		:	220


	CYRUS CHESS ! Un de mes premier programmes de jeu en EGA !
	C'est vrai qu'il y avait une protection disquette mais � l'�poque
	je n'avais pas l'exp�rience n�cessaire pour faire sauter le
	verrou.
	Ce qui m'a incit� � jeter un oeil sur ce SOFT fut l'appel au-secours
	qui suit: ( Adresse et NOM ont �t� supprim� )

	++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

B. Alain                           Snetsabar, le 28/08/93
chemin de la Croix blanche
88999 Snetsabar

                    Freddy,

     Ayant lu une disquette de fichiers *.dep, je me permets de
vous  �crire  car j'ai tent� de d�plomber un jeu  et  n'y  suis
parvenu que partiellement car je ne poss�de pas votre ma�trise.
Voici le r�sum� des �v�nements:
     -  le  programme  � d�prot�ger se nomme  CYRUS.COM  (  jeu
d'�checs).
    - en le lan�ant, on obtient le message "Disque corrompu".
    - avec AFD, je le fais tourner et remarque l'acc�s sur A:
        MOV BX, 0830
        MOV CX, 0201
        MOV AX, 0204
        INT 13
        ...
        CMP AH, 04

     -  apr�s l'INT 13, AX est � 8000. Je fais une modification
en ligne sur AX � 0400, je lance un G et le programme tourne.
     - je poursuis en faisant la modif en dur. Ayant rep�r� une
zone texte (102 et suivants), je court-circuite l'INT 13 par un
JMP 102 o� j'�cris:
         MOV  AX,  (valeur lue sur la pile au retour  de  l'INT
13)
        PUSHAX
        POPF
        MOV AX, 0400
        JMP (adresse suivant l'INT 13)
     - ces modifications sont dans le programme CYRUS1.COM mais
il  ne  tourne pas ( les fl�ches de d�placement ne fonctionnent
pas).
     -  retour au programme original et surprise: si on modifie
en ligne le registre AX � 0400 apr�s l'INT 13 et qu'on lance un
G, le programme tourne parfaitement. Si l'on tente, apr�s l'INT
13  et la modif sur AX, de suivre le programme par instruction,
il  se  plante. D�tecte-t-il le pas � pas ? Quaid  Analyser  en
pacth  in/out  sur la 10 m'envoie des tas de  messages  sur  la
vid�o auxquels je ne comprends rien.
     - je d�cide alors d'utiliser SOFT-ICE dont vous vantez les
qualit�s. H�las, je n'ai pas la doc de ce soft, et je  ne  sais
pas  comment il est possible de faire d�rouler un programme  et
d'examiner par la suite par o� il est pass� ( est-ce  cela  que
l'on appelle le back trace ? ). Malgr� plusieurs tentatives,  (
XRSET,  TRACE  100,  XP, SHOW) rien ne se  passe  et  je  jette
l'�ponge,  d'autant  plus que cette version  2.50  de  SOFT-ICE
simule un clavier QWERTY.
         L'ultime  solution, c'est Freddy, me dis-je  !!  Voil�
donc  la  raison de cette lettre. J'en profite pour  y  ajouter
quelques questions:

     - Pourriez-vous me faire parvenir une doc de SOFT-ICE  ? (
je peux photocopier).
    - Pourquoi avec SOFT-ICE ai-je un clavier QWERTY ?
     -  Qu'est-ce  que le back trace en comment en  faire  avec
SOFT-ICE ?
     -  Comment  �viter  la d�tection  du  pas  �  pas  par  un
programme ?
    - Avec SOFT-ICE, quelle configuration de CONFIG.SYS ?
    - Connaissez-vous la protection Cadenas ?
     - Existe-t-il un programme lisant le header d'un fichier (
si vous l'avez, pouvez-vous me l'envoyer ?).
     -  Pourriez-vous m'adresser les derniers *.dep  ? ( > juin
1992)


     Ces  informations me permettraient de mieux utiliser SOFT-
ICE et ainsi de tenter de nouvelles aventures de d�plombage ( �
mon niveau qui est tr�s modeste ).

     Vous remerciant par avance pour votre gentillesse et  pour
la  qualit�  de vos informations, je vous prie de croire,  cher
Freddy, � l'assurance de mes sentiments les meilleurs.

	++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

	Je reprends donc du d�but le cheminement de B.A.

	L'INT13 est utilis�e pour l'acc�s au lecteur de disquette. Il faut
	bien sur passer les 20 premi�res it�rations qui concernent le disque
	dur. Au bout de la vingt et uni�me le lecteur se manifeste...
	Au retour on teste le contenu du registre AH qui doit contenir 04.
	Comment le sais-je, parce-que un peu plus loin on fait un CMP AH,04.
	En faisant la modif "ON LINE" le soft fonctionne. Bien. Cela semble
	bien facile mais la suite va d�montrer le contraire.

	CS=1110
	CS:01AD BB3008		MOV	BX,0830
	CS:01B0 B90102		MOV	CX,0201
	CS:01B3 B80402		MOV	AX,0204
	CS:01B6 CD13		INT	13
	CS:01B8	59		POP	CX
	CS:01B9	720A	   ���<	JB	01C5   
	CS:01BB	BACD00	   �	MOV	DX,00CD ;  AFFICHAGE DU MESSAGE
	CS:01BE	B409	   �	MOV	AH,09   ;  "DISQUE CORROMPU"
	CS:01C0	CD21	   �	INT 	21      ;  PAR INT 21 SF 09.
	CS:01C2	E973FF	   �	JMP	0138
	CS:01C5	80FC04	   ���>	CMP	AH,04   ; On vient ici pour tester.
	CS:01C8 740F		JZ	01D9    ; Si OK on saute en 01D9.

	La modification faite simplement dans le fichier en for�ant le saut
	ne donne rien, en pla�ant 04 dans AH avant le test cela ne fonctionne
	pas mieux. Cr�non !

	Quand je dis que le soft ne fonctionne pas je veux simplement dire
	qu'il se charge normalement en fait mais que les touches de
	d�placement ne sont plus valid�es. L'entr�e des codes au clavier du
	style E2E4 est gel�e �galement.

	Je fulmine pendant une demi-heure essayant toutes sortes de manips
	sans le moindre r�sultat... puis, la lumi�re vint.

	Lorsque je fais ma modif en volant, en for�ant un flag ou en mettant
	04 dans AH, je ne modifie pas le code du programme et �a fonctionne.
	Par contre d�s que l'on modifie le source on ne peut plus jouer !

	Il doit y avoir un test de CRC quelque part de tout le programme ou
	plus simplement de la partie qui va tester la disquette.
	Je place un point d'arr�t en lecture du test qui suit l'INT13, et hop
	SOFT-ICE r�apparait une fois que l'image est affich�e !

	BPMB 1110:01C8 R

	Le test du CRC se fait en CS:1918, il suffit de le forcer pour
	pouvoir faire toutes les modifs que l'on veut autour de l'INT13.

	Test du CRC: ( cette routine se trouve dans le fichier CHESS.TSK )

	CS=2649
	CS:1908	AC		LODSB
	CS:1909 03D8		ADD	BX,AX
	CS:190B	E2FB		LOOP	1908
	CS:190D	07		POP	ES
	CS:190E 1F		POP	DS
	CS:190F	80268724EF	AND	BYTE PTR [2487],EF
	CS:1914 81FB71CB	CMP	BX,CB71 ; Le CRC doit �tre �gal � CB71.
	CS:1918 7405		JZ	191F	; A forcer par EB ( jmp ).
	CS:191A 800E872410	OR	BYTE PTR [2487],10 ; ici on emp�che les
							   ; touches.
	CS:191F E8B001		CALL	1AD2 ; Suite....

	Et voici la modif � faire apr�s l'INT 13 pour forcer le test:

	CS:01B6 CD13		INT	13
	CS:01B8	59		POP	CX
	CS:01B9	EB1E	   	JMP	01D9   

	Avec PCTOOLS chercher dans le fichier CYRUS.COM:

		Chercher: B90102B80402CD1359720A
		Modifier: ..................EB1E

	Et dans le fichier CHESS.TSK:

		Chercher: 81FB71CB7405
		Modifier: ........EB..

	FREDDY